package com.radroxx.balancelg;

import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.radroxx.balancelg.balancedata.GetBalance;
import com.radroxx.balancelg.balancedata.Provider;

/**
 * Created by Rodion on 08.07.13.
 */
public class ConfigWidget extends Activity {

    private int widgetID = AppWidgetManager.INVALID_APPWIDGET_ID;
    private Intent resultValue = null ;

    private GetBalance balance = null;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // извлекаем ID конфигурируемого виджета
        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        if (extras != null) {
            widgetID = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
                    AppWidgetManager.INVALID_APPWIDGET_ID);
        }
        // и проверяем его корректность
        if (widgetID == AppWidgetManager.INVALID_APPWIDGET_ID) {
            finish();
        }

        // формируем intent ответа
        resultValue = new Intent();
        resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);

        // отрицательный ответ
        setResult(RESULT_CANCELED, resultValue);

        balance = new GetBalance( widgetID );

        setContentView(R.layout.configwidget);

        //Настраиваем окно конфигурации
        // адаптер
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Provider.getArrayString());
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        Spinner spinner = (Spinner) findViewById(R.id.sp_provider);
        spinner.setAdapter(adapter);
        // устанавливаем обработчик нажатия
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                                       int position, long id) {
                // показываем позиция нажатого элемента
                if( view != null )
                    setProvider( Provider.valueOf( ((TextView)view).getText().toString() ) );
            }
            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
            }
        });

        //Заполняем данными если есть чем

        // выделяем элемент
        if( balance.getProvider() != null )
            spinner.setSelection( balance.getProvider().ordinal() );
        if( balance.getLogin() != null )
            ((TextView)findViewById(R.id.et_login)).setText( balance.getLogin() );
        if( balance.getPassword() != null )
            ((TextView)findViewById( R.id.et_password )).setText( balance.getPassword() );
    }

    public void onClickCancel(View v){
        finish();
    }

    private void setProvider( Provider p ){
        if( p != null )
        {
            balance.setProvider( p );
            ((TextView)findViewById(R.id.et_login)).setEnabled( balance.getIsLogin() );
            ((TextView)findViewById( R.id.et_password )).setEnabled( balance.getIsPassword() );
        }
    }

    public void onClickOk(View v){
        balance.setLogin( ((EditText)findViewById(R.id.et_login)).getText().toString() );
        balance.setPassword( ((EditText)findViewById(R.id.et_password)).getText().toString() );
        if( balance.Save( getApplicationContext() ) ){
            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this);
            Widget.updateWidget(this,appWidgetManager,balance.getWidgetId(),balance);
            setResult(RESULT_OK, resultValue);
         }
        else {
            Toast.makeText( getApplicationContext(), R.string.ErrorAddDataDB ,Toast.LENGTH_LONG ).show();
        }
        finish();
    }
    public void onClickFaindData(View v){
        balance.setLogin( ((EditText)findViewById(R.id.et_login)).getText().toString() );
        balance.setPassword( ((EditText)findViewById(R.id.et_password)).getText().toString() );
        if( balance.getData(v.getContext()).length() < 1 )
            Toast.makeText( getApplicationContext(), R.string.ErrorGetData ,Toast.LENGTH_LONG ).show();
        else
            Toast.makeText( getApplicationContext(), R.string.ProvercaGood ,Toast.LENGTH_LONG ).show();
    }
    public void onClickFaindLogin(View v){
        //попробывать угадать логин
        if( balance.findLogin() )
            if( balance.getLogin() != null )
                ((TextView)findViewById(R.id.et_login)).setText( balance.getLogin() );
    }
    public void onClickFaindProvider(View v){
        //Попробывать угадать провайдера

        if( balance.findProvider() )
        {

            //Заполняем данными если есть чем

            Spinner spinner = (Spinner) findViewById(R.id.sp_provider);
            // выделяем элемент
            if( balance.getProvider() != null )
                spinner.setSelection( balance.getProvider().ordinal() );
            if( balance.getLogin() != null )
                ((TextView)findViewById(R.id.et_login)).setText( balance.getLogin() );
            if( balance.getPassword() != null )
                ((TextView)findViewById( R.id.et_password )).setText( balance.getPassword() );

        }
    }
}